/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package CapadeDatos;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;
import modelo.beandatosalumno;
import modelo.beanusuario;
import proyectocatalina.Login;

/**
 *
 * @author principal
 */



public class DaoAlumno {
    private beanusuario User;
    public beandatosalumno  codigo(){
        String opcion = "alumno";
        beandatosalumno  modelo  = new beandatosalumno();
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="Call proc_contador('"+opcion+"')"; // PROCEDIMIENTO ALMACENADO
            ResultSet rs =stm.executeQuery(sql);
            while (rs.next()){
                   modelo.setLiteral(rs.getString(1));
                   modelo.setNumerico(rs.getInt(2));
            }
    }catch(Exception e){System.out.print(e);}
   return modelo;
   }
public void insertarusuario(String apellidopaterno,
        String apellidomaterno, String nombres,java.sql.Date fechanacimiento,String codsexo,
        String coddistrito,String dni, int codactividad, int codprocedencia, String residenciadireccion,
        String residencianumero, String residencialugar, String codcarrera,int codturno
        ){
        Boolean verdad = false;
        int codigo = 0;
        String literalcod;
    try{
            Connection cn2 = ConexionBD.getInstance().getConnection();
            Statement stm2 = cn2.createStatement();
            String sql ="select  Contador  from contador where Descripcion = 'alumno';";
            ResultSet rs =stm2.executeQuery(sql);
            if(rs.wasNull()){
               verdad = false;
            }
            else {
                 while (rs.next()){
                    codigo = rs.getInt(1);
                 }
               codigo = codigo + 1;
               literalcod = "A"+codigo;
               Connection cn = ConexionBD.getInstance().getConnection();
//            Statement stm = cn.createStatement();
            String updateString = "Call proc_regristraralumno(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            CallableStatement insertusuario = cn.prepareCall(updateString);
            insertusuario.setString(1,literalcod);
            insertusuario.setString(2, apellidopaterno);
            insertusuario.setString(3, apellidomaterno);
            insertusuario.setString(4, nombres);
            insertusuario.setDate(5, fechanacimiento);
            insertusuario.setString(6,codsexo);
            insertusuario.setString(7,coddistrito);
            insertusuario.setString(8,dni);
            insertusuario.setInt(9,codactividad);
            insertusuario.setInt(10,codprocedencia);
            insertusuario.setString(11,residenciadireccion);
            insertusuario.setString(12,residencianumero);
            insertusuario.setString(13,residencialugar);
            insertusuario.setString(14,codcarrera);
            insertusuario.setInt(15,codturno);
            User = Login.usuarioglobal;
            String sql3 = "Call proc_auditoria(?,?,?,?,?,?)";
            Connection cn4 = ConexionBD.getInstance().getConnection();
            CallableStatement insertauditoria = cn4.prepareCall(sql3);
            insertauditoria.setInt(1, User.getIdUsuario());
            insertauditoria.setString(2, "alumno");
            insertauditoria.setString(3, "insertar");
            insertauditoria.setString(4, "nulo");
            insertauditoria.setString(5,"GrupodeObjetos - Cod:"+literalcod);
            insertauditoria.setString(6,"nulo");          
            if(insertusuario.execute()){
               verdad = false;
               JOptionPane.showMessageDialog(null,"NO INGRESADO");
            }
            else {
                verdad = true;
                JOptionPane.showMessageDialog(null,"INGRESADO");
                   Connection cn3 = ConexionBD.getInstance().getConnection();
                   Statement stm3 = cn3.createStatement();
                   String  sql2 ="update contador set contador = "+codigo+" where idContador = 1;";
                   stm3.executeUpdate(sql2);
                   insertauditoria.execute();
            }
            }

           
    }catch(Exception e){ JOptionPane.showMessageDialog(null,e.getMessage());
   }
   }
public void actualizarusuario(String codalumno , String apellidopaterno,
        String apellidomaterno, String nombres,String coddistrito,int codactividad, int codprocedencia, String residenciadireccion,
        String residencianumero, String residencialugar, String codcarrera,int codturno
        ){
        Boolean verdad = false;
    try{
           Connection cn = ConexionBD.getInstance().getConnection();
           String updateString = "Call proc_actualizaralumno(?,?,?,?,?,?,?,?,?,?,?,?)";
            String datosnuevos = apellidopaterno+","+apellidomaterno+","
                                 +nombres+","+coddistrito+","+codactividad+","
                                 +codprocedencia+","+residenciadireccion+", "
                                 +residencianumero+", "+residencialugar+", "
                                 +codcarrera+", "+codturno;
            
            CallableStatement actualusuario = cn.prepareCall(updateString);
            actualusuario.setString(1,codalumno);
            actualusuario.setString(2, apellidopaterno);
            actualusuario.setString(3, apellidomaterno);
            actualusuario.setString(4, nombres);
            actualusuario.setString(5,coddistrito);
            actualusuario.setInt(6,codactividad);
            actualusuario.setInt(7,codprocedencia);
            actualusuario.setString(8,residenciadireccion);
            actualusuario.setString(9,residencianumero);
            actualusuario.setString(10,residencialugar);
            actualusuario.setString(11,codcarrera);
            actualusuario.setInt(12,codturno);
            String sql4 = "Select * from alumno,matricula  where alumno.cod_alumno = matricula.cod_alumno and matricula.cod_matricula ='"+codalumno+"';";
            Connection cn4 = ConexionBD.getInstance().getConnection();
            Statement stm = cn4.createStatement();
            ResultSet rs =stm.executeQuery(sql4);
            String datosantiguos =  "";
            while (rs.next()){
                datosantiguos = datosantiguos + rs.getString(1) + "," +
                rs.getString(2) + ","+rs.getString(3)+","+rs.getString(4)+","
                +rs.getString(5)+","+rs.getDate(6)+","+rs.getString(7)+"," 
                +rs.getString(8)+","+rs.getString(9)+","+rs.getInt(10)+","
                +rs.getInt(11)+","+rs.getString(12)+","+rs.getString(13)+","
                +rs.getString(14)+","+rs.getString(15)+","+rs.getString(16);                  
            }
            if(actualusuario.execute()){
               verdad = false;
               JOptionPane.showMessageDialog(null,"NO INGRESADO");
            }
            else {
                verdad = true;
                User = Login.usuarioglobal;
                String sql3 = "Call proc_auditoria(?,?,?,?,?,?)";
                Connection cn5 = ConexionBD.getInstance().getConnection();
                CallableStatement insertauditoria = cn5.prepareCall(sql3);
                insertauditoria.setInt(1, User.getIdUsuario());
                insertauditoria.setString(2, "alumno");
                insertauditoria.setString(3, "actualizar");
                insertauditoria.setString(4, datosantiguos);
                insertauditoria.setString(5,datosnuevos);
                insertauditoria.setString(6,"nulo"); 
                insertauditoria.execute();
                JOptionPane.showMessageDialog(null,"INGRESADO");           
            }
    }catch(Exception e){System.out.print(e);
   }
}
public static  beandatosalumno usuario(String matricula){
           beandatosalumno alumno  = new beandatosalumno();
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="Call proc_buscaralumno('"+matricula+"')"; // PROCEDIMIENTO ALMACENADO
            ResultSet rs =stm.executeQuery(sql);
            while (rs.next()){
                   alumno.setAlumno_apellido_paterno(rs.getString(2));
                   alumno.setAlumno_apellido_materno(rs.getString(3));
                   alumno.setAlumno_nombres(rs.getString(4));
                   alumno.setAlumno_actividadlaboral(rs.getString(5));
                   alumno.setAlumno_procedencia_ubicacion(rs.getString(6));
                   alumno.setResidencia_direccion(rs.getString(7));
                   alumno.setResidencia_numero(rs.getString(8));//
                   alumno.setAlumno_departamento(rs.getString(9));
                   alumno.setAlumno_provincia(rs.getString(10));
                   alumno.setAlumno_distrito(rs.getString(11));
                   alumno.setAlumno_Carrea(rs.getString(12));                  ;
                   alumno.setAlumno_turno(rs.getString(13));
                   alumno.setResidencia_lugar(rs.getString(14));


        }
    }catch(Exception e){System.out.print(e);
   }return alumno;
   }
}
